home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_a / macros.lib < prev    next >
Text File  |  1995-04-22  |  11KB  |  902 lines

  1. *My SYSTEXT 
  2. *Version 6 
  3.  
  4. OPEN=3 
  5. GETREC=5 
  6. GETCHR=7 
  7. PUTREC=9 
  8. PUTCHR=11 
  9. CLOSE=12 
  10. STATIS=13 
  11. SPECIL=14 
  12. DRAWLN=$11 
  13. FILLIN=$12 
  14. RENAME=$20 
  15. DELETE=$21 
  16. FORMAT=$22 
  17. LOCKFL=$23 
  18. UNLOCK=$24 
  19. POINT=$25 
  20. NOTE=$26 
  21. IOCFRE=$FF 
  22. APPEND=$01 
  23. DIRECT=$02 
  24. OPNRD=$04 
  25. OPNWT=$08 
  26. OPNRW=$0C 
  27. MXDMOD=$10 
  28. INSCLR=$20 
  29. SCREDT='E' 
  30. KBD='K' 
  31. DISPLY='S' 
  32. PRINTR='P' 
  33. CASSET='C' 
  34. MODEM='M' 
  35. DISK='D' 
  36. EOL=$9B 
  37. CR=EOL 
  38. Z=$00 
  39. TRUE=$FFFF 
  40. ON=TRUE 
  41. FALSE=0 
  42. OFF=FALSE 
  43. *--------------- 
  44. CASINI=$02 
  45. WARMST=$08 
  46. BOOT?=$09 
  47. DOSVEC=$0A 
  48. DOSINI=$0C 
  49. APPMHI=$0E 
  50. POKMSK=$10 
  51. BRKKEY=$11 
  52. RTCLOK=$12 
  53. SOUNDR=$41 
  54. ATRACT=$4D 
  55. DRKMSK=$4E 
  56. COLRSH=$4F 
  57. VDSLST=$200 
  58. VKEYBD=$208 
  59. VTIMR1=$210 
  60. VTIMR2=$212 
  61. VTIMR4=$214 
  62. VIMIRQ=$216 
  63. CDTMV1=$218 
  64. CDTMV2=$21A 
  65. CDTMV3=$21C 
  66. CDTMV4=$21E 
  67. CDTMV5=$220 
  68. VVBLKI=$222 
  69. VVBLKD=$224 
  70. CDTMA1=$226 
  71. CDTMA2=$228 
  72. CDTMF3=$22A 
  73. SRTIMR=$22B 
  74. CDTMF4=$22C 
  75. CDTMF5=$22E 
  76. SDMCTL=$22F 
  77. SDLSTL=$230 
  78. SDLSTH=$231 
  79. SSKCTL=$232 
  80. COLDST=$244 
  81. GPRIOR=$26F 
  82. PADDL0=$270 
  83. STICK0=$278 
  84. PTRIG0=$27C 
  85. STRIG0=$284 
  86. SHFLK=$2BE 
  87. PCOLR0=$2C0 
  88. PCOLR1=$2C1 
  89. PCOLR2=$2C2 
  90. PCOLR3=$2C3 
  91. COLOR0=$2C4 
  92. COLOR1=$2C5 
  93. COLOR2=$2C6 
  94. COLOR3=$2C7 
  95. COLOR4=$2C8 
  96. MEMLO=$2E7 
  97. CRSINH=$2F0 
  98. CHACT=$2F3 
  99. CHBAS=$2F4 
  100. CH=$2FC 
  101. DDEVIC=$300 
  102. DUNIT=$301 
  103. DCOMND=$302 
  104. DSTATS=$303 
  105. DBUFLO=$304 
  106. DBUFHI=$305 
  107. DTIMLO=$306 
  108. DBYTLO=$308 
  109. DBYTHI=$309 
  110. DAUX1=$30A 
  111. DAUX2=$30B 
  112. ICCOM=$342 
  113. ICSTA=$343 
  114. ICBAL=$344 
  115. ICBAH=$345 
  116. ICPTL=$346 
  117. ICPTH=$347 
  118. ICBLL=$348 
  119. ICBLH=$349 
  120. ICAX1=$34A 
  121. ICAX2=$34B 
  122. DSKINV=$E453 
  123. CIOV=$E456 
  124. IOCB0=$00 
  125. IOCB1=$10 
  126. IOCB2=$20 
  127. IOCB3=$30 
  128. IOCB4=$40 
  129. IOCB5=$50 
  130. IOCB6=$60 
  131. IOCB7=$70 
  132. SIOV=$E459 
  133. SETVBV=$E45C 
  134. SETMR1=1 
  135. SETMR2=2 
  136. SETMR3=3 
  137. SETMR4=4 
  138. SETMR5=5 
  139. SETIMM=6 
  140. SETDEF=7 
  141. XITVBL=$E462 
  142. WARMSV=$E474 
  143. COLDSV=$E477 
  144. HPOSP0=$D000 
  145. HPOSP1=$D001 
  146. HPOSP2=$D002 
  147. HPOSP3=$D003 
  148. M0PF=$D000 
  149. M1PF=$D001 
  150. M2PF=$D002 
  151. M3PF=$D003 
  152. HPOSM0=$D004 
  153. HPOSM1=$D005 
  154. HPOSM2=$D006 
  155. HPOSM3=$D007 
  156. P0PF=$D004 
  157. P1PF=$D005 
  158. P2PF=$D006 
  159. P3PF=$D007 
  160. M0PL=$D008 
  161. M1PL=$D009 
  162. M2PL=$D00A 
  163. M3PL=$D00B 
  164. SIZEP0=$D008 
  165. SIZEP1=$D009 
  166. SIZEP2=$D00A 
  167. SIZEP3=$D00B 
  168. P0PL=$D00C 
  169. P1PL=$D00D 
  170. P2PL=$D00E 
  171. P3PL=$D00F 
  172. SIZEM=$D00C 
  173. GRAFP0=$D00D 
  174. TRIG0=$D010 
  175. TRIG1=$D011 
  176. TRIG2=$D012 
  177. TRIG3=$D013 
  178. GRAFM=$D011 
  179. COLPM0=$D012 
  180. COLPF0=$D016 
  181. COLPF1=$D017 
  182. COLPF2=$D018 
  183. COLPF3=$D019 
  184. COLBK=$D01A 
  185. PRIOR=$D01B 
  186. VDELAY=$D01C 
  187. GRACTL=$D01D 
  188. HITCLR=$D01E 
  189. CONSOL=$D01F 
  190. POT0=$D200 
  191. AUDF1=$D200 
  192. AUDF2=$D202 
  193. AUDF3=$D204 
  194. AUDF4=$D206 
  195. AUDC1=$D201 
  196. AUDC2=$D203 
  197. AUDC3=$D205 
  198. AUDC4=$D207 
  199. AUDCTL=$D208 
  200. ALLPOT=$D208 
  201. KBCODE=$D209 
  202. STIMER=$D209 
  203. RANDOM=$D20A 
  204. SERIN=$D20A 
  205. SKREST=$D20A 
  206. POTGO=$D20B 
  207. SEROUT=$D20C 
  208. IRQEN=$D20E 
  209. IRQST=$D20E 
  210. SKCTL=$D20F 
  211. SKSTAT=$D20F 
  212. PORTA=$D300 
  213. PORTB=$D301 
  214. PACTL=$D302 
  215. PBCTL=$D303 
  216. DMACTL=$D400 
  217. CHACTL=$D401 
  218. DLISTL=$D402 
  219. DLISTH=$D403 
  220. HSCROL=$D404 
  221. VSCROL=$D405 
  222. PMBASE=$D407 
  223. CHBASE=$D409 
  224. WSYNC=$D40A 
  225. VCOUNT=$D40B 
  226. NMIEN=$D40E 
  227. NMIRES=$D40F 
  228. NMIST=$D40F 
  229. DLBL1=$00 
  230. DLBL2=$10 
  231. DLBL3=$20 
  232. DLBL4=$30 
  233. DLBL5=$40 
  234. DLBL6=$50 
  235. DLBL7=$60 
  236. DLBL8=$70 
  237. DLJMP=$01 
  238. DLJVB=$41 
  239. DLHSCR=$10 
  240. DLVSCR=$20 
  241. DLLMS=$40 
  242. DLINT=$80 
  243. DLAM2=2 
  244. DLAM3=3 
  245. DLAM4=4 
  246. DLAM5=5 
  247. DLAM6=6 
  248. DLAM7=7 
  249. DLAM8=8 
  250. DLAM9=9 
  251. DLAM10=10 
  252. DLAM11=11 
  253. DLAM12=12 
  254. DLAM13=13 
  255. DLAM14=14 
  256. DLAM15=15 
  257. DLBM0=DLAM2 
  258. DLBM1=DLAM6 
  259. DLBM2=DLAM7 
  260. DLBM3=DLAM8 
  261. DLBM4=DLAM9 
  262. DLBM5=DLAM10 
  263. DLBM6=DLAM11 
  264. DLBM7=DLAM13 
  265. DLBM8=DLAM15 
  266. SWSTRT=$01 
  267. SWSEL=$02 
  268. SWOPT=$04 
  269. JYR=$08 
  270. JYL=$04 
  271. JYB=$02 
  272. JYF=$01 
  273.  
  274.  
  275.  
  276. *Macro library 
  277. *Version9 
  278.  
  279. * Data placement 
  280.  
  281. MEMMACRO address 
  282. ORG%1+offset 
  283. LOC%1+develop 
  284. ENDM 
  285.  
  286. USEMACRO address 
  287. :otmpset*O 
  288. :ltmpset*L 
  289. MEM%1 
  290. ENDM 
  291.  
  292. USEENDMACRO 
  293. org:otmp 
  294. loc:ltmp 
  295. ENDM 
  296.  
  297. * 8-bit arithmetic 
  298.  
  299. ADDMACRO 8con/loc [,index reg] 
  300. %Lclc 
  301. IF['[%2]'='[X]']OR['[%2]'='[Y]'] 
  302.  adc%1,%2 
  303. ELSE 
  304.  adc%1 
  305. ENDIF 
  306. ENDM 
  307.  
  308. SUBMACRO 8con/loc [,index reg] 
  309. %Lsec 
  310. IF['[%2]'='[X]']OR['[%2]'='[Y]'] 
  311.  sbc%1,%2 
  312. ELSE 
  313.  sbc%1 
  314. ENDIF 
  315. ENDM 
  316.  
  317. DIVMACRO pwrof2 
  318. %Llsra 
  319. %MCset%1/2 
  320. IF%MC>1 
  321.  DIV%MC 
  322. ELSE 
  323. %MC set0 
  324. ENDIF 
  325. ENDM 
  326.  
  327. MULMACRO pwrof2 
  328. %Lasla 
  329. %MCset%1/2 
  330. IF%MC>1 
  331.  MUL%MC 
  332. ELSE 
  333. %MC set0 
  334. ENDIF 
  335. ENDM 
  336.  
  337. BMPMACRO loc [,index reg] ,8con 
  338. IF['[%2]'='[X]']OR['[%2]'='[Y]'] 
  339. %L lda%1,%2 
  340.  add#%3 
  341.  sta%1,%2 
  342. ELSE 
  343. %L lda%1 
  344.  add#%2 
  345.  sta%1 
  346. ENDIF 
  347. ENDM 
  348.  
  349. BAKMACRO loc [,index reg] ,8con 
  350. IF['[%2]'='[X]']OR['[%2]'='[Y]'] 
  351. %L lda%1,%2 
  352.  sub#%3 
  353.  sta%1,%2 
  354. ELSE 
  355. %L lda%1 
  356.  sub#%2 
  357.  sta%1 
  358. ENDIF 
  359. ENDM 
  360.  
  361. * 16-bit arithmetic 
  362.  
  363. ADWMACRO loc1,loc2,destloc 
  364. %Llda%1 
  365. add%2 
  366. sta%3 
  367. lda%1+1 
  368. adc%2+1 
  369. sta%3+1 
  370. ENDM 
  371.  
  372. SBWMACRO loc1,loc2,destloc 
  373. %Llda%1 
  374. sub%2 
  375. sta%3 
  376. lda%1+1 
  377. sbc%2+1 
  378. sta%3+1 
  379. ENDM 
  380.  
  381. BMPWMACRO address,16con 
  382. %Llda%1 
  383. add#low[%2] 
  384. sta%1 
  385. IF[high %2]=0 
  386.  bcc?%K 
  387.  inc%1+1 
  388. ?%K=* 
  389. ELSE 
  390.  lda%1+1 
  391.  adc#high[%2] 
  392.  sta%1+1 
  393. ENDIF 
  394. ENDM 
  395.  
  396. BAKWMACRO address,16con 
  397. %Llda%1 
  398. sub#low[%2] 
  399. sta%1 
  400. IF[high %2]=0 
  401.  bcs?%K 
  402.  dec%1+1 
  403. ?%K=* 
  404. ELSE 
  405.  lda%1+1 
  406.  sbc#high[%2] 
  407.  sta%1+1 
  408. ENDIF 
  409. ENDM 
  410.  
  411. DEWMACRO word 
  412. %Llda%1 
  413. bne?%K 
  414. dec%1+1 
  415. ?%Kdec%1 
  416. ENDM 
  417.  
  418. INWMACRO word 
  419. %Linc%1 
  420. bne?%K 
  421. inc%1+1 
  422. ?%K=* 
  423. ENDM 
  424.  
  425. * Conditional branches 
  426.  
  427. BGEMACRO loc 
  428. %Lbcs%1 
  429. ENDM 
  430.  
  431. BGTMACRO loc 
  432. %Lbcc?%K 
  433. bne%1 
  434. ?%K=* 
  435. ENDM 
  436.  
  437. BLEMACRO loc 
  438. %Lbcc%1 
  439. beq%1 
  440. ENDM 
  441.  
  442. BLTMACRO loc 
  443. %Lbcc%1 
  444. ENDM 
  445.  
  446. BNZMACRO loc 
  447. %Lbne%1 
  448. ENDM 
  449.  
  450. BZMACRO loc 
  451. %Lbeq%1 
  452. ENDM 
  453.  
  454. * Conditional jumps 
  455.  
  456. JMIMACRO loc 
  457. %Lbpl?%K 
  458. jmp%1 
  459. ?%K=* 
  460. ENDM 
  461.  
  462. JPLMACRO loc 
  463. %Lbmi?%K 
  464. jmp%1 
  465. ?%K=* 
  466. ENDM 
  467.  
  468. JCSMACRO loc 
  469. %Lbcc?%K 
  470. jmp%1 
  471. ?%K=* 
  472. ENDM 
  473.  
  474. JCCMACRO loc 
  475. %Lbcs?%K 
  476. jmp%1 
  477. ?%K=* 
  478. ENDM 
  479.  
  480. JGEMACRO loc 
  481. %Lblt?%K 
  482. jmp%1 
  483. ?%K=* 
  484. ENDM 
  485.  
  486. JGTMACRO loc 
  487. %Lble?%K 
  488. jmp%1 
  489. ?%K=* 
  490. ENDM 
  491.  
  492. JLEMACRO loc 
  493. %Lbgt?%K 
  494. jmp%1 
  495. ?%K=* 
  496. ENDM 
  497.  
  498. JLTMACRO loc 
  499. %Lbge?%K 
  500. jmp%1 
  501. ?%K=* 
  502. ENDM 
  503.  
  504. JNEMACRO loc 
  505. %Lbz?%K 
  506. jmp%1 
  507. ?%K=* 
  508. ENDM 
  509.  
  510. JNZMACRO loc 
  511. %Lbz?%K 
  512. jmp%1 
  513. ?%K=* 
  514. ENDM 
  515.  
  516. JEQMACRO loc 
  517. %Lbnz?%K 
  518. jmp%1 
  519. ?%K=* 
  520. ENDM 
  521.  
  522. JZMACRO loc 
  523. %Lbnz?%K 
  524. jmp%1 
  525. ?%K=* 
  526. ENDM 
  527.  
  528. * Auto decrement and branches 
  529.  
  530. DXPLMACRO loc 
  531. %Ldex 
  532. IF%1='*' 
  533.  bpl*-1 
  534. ELSE 
  535.  
  536.  IF[[*>%1]&[[*-%1]<126]]OR[[*<%1]&[[%1-*]<129]] 
  537.   bpl%1 
  538.  ELSE 
  539.   jpl%1 
  540.  ENDIF 
  541.  
  542. ENDIF 
  543. ENDM 
  544.  
  545. DYPLMACRO loc 
  546. %Ldey 
  547. IF%1='*' 
  548.  bpl*-1 
  549. ELSE 
  550.  
  551.  IF[[*>%1]&[[*-%1]<126]]OR[[*<%1]&[[%1-*]<129]] 
  552.   bpl%1 
  553.  ELSE 
  554.   jpl%1 
  555.  ENDIF 
  556.  
  557. ENDIF 
  558. ENDM 
  559.  
  560. DXNZMACRO loc 
  561. %Ldex 
  562. IF%1='*' 
  563.  bnz*-1 
  564. ELSE 
  565.  
  566.  IF[[*>%1]&[[*-%1]<126]]OR[[*<%1]&[[%1-*]<129]] 
  567.   bnz%1 
  568.  ELSE 
  569.   jnz%1 
  570.  ENDIF 
  571.  
  572. ENDIF 
  573. ENDM 
  574.  
  575. DYNZMACRO loc 
  576. %Ldey 
  577. IF%1='*' 
  578.  bnz*-1 
  579. ELSE 
  580.  
  581.  IF[[*>%1]&[[*-%1]<126]]OR[[*<%1]&[[%1-*]<129]] 
  582.   bnz%1 
  583.  ELSE 
  584.   jnz%1 
  585.  ENDIF 
  586.  
  587. ENDIF 
  588. ENDM 
  589.  
  590. DCPLMACRO address,loc 
  591. %Ldec%1 
  592. IF%2='*' 
  593.  
  594.  IF%1<$100 
  595.   bpl*-2 
  596.  ELSE 
  597.  
  598.   bpl*-3 
  599.  ENDIF 
  600.  
  601. ELSE 
  602.  
  603.  IF[[*>%2]&[[*-%2]<126]]OR[[*<%2]&[[%2-*]<129]] 
  604.   bpl%2 
  605.  ELSE 
  606.   jpl%2 
  607.  ENDIF 
  608.  
  609. ENDIF 
  610. ENDM 
  611.  
  612. DCNZMACRO address,loc 
  613. %Ldec%1 
  614. IF%2='*' 
  615.  
  616.  IF%1<$100 
  617.   bnz*-2 
  618.  ELSE 
  619.   bnz*-3 
  620.  ENDIF 
  621.  
  622. ELSE 
  623.  
  624.  IF[[*>%2]&[[*-%2]<126]]OR[[*<%2]&[[%2-*]<129]] 
  625.   bnz%2 
  626.  ELSE 
  627.   jnz%2 
  628.  ENDIF 
  629.  
  630. ENDIF 
  631. ENDM 
  632.  
  633. * 8-bit comparison 
  634.  
  635. CPIMACRO loc [,index reg] ,8con 
  636. IF['[%2]'='[X]']OR['[%2]'='[Y]'] 
  637. %L lda%1,%2 
  638.  cmp#%3 
  639. ELSE 
  640. %L lda%1 
  641.  cmp#%2 
  642. ENDIF 
  643. ENDM 
  644.  
  645. CPBMACRO loc1,loc2 
  646. %Llda%1 
  647. cmp%2 
  648. ENDM 
  649.  
  650. * 16-bit comparison 
  651.  
  652. CPWMACRO loc1,loc2 
  653. %Llda%1+1 
  654. cmp%2+1 
  655. bne?%K 
  656. lda%1 
  657. cmp%2 
  658. ?%K=* 
  659. ENDM 
  660.  
  661. CPIWMACRO loc,16con 
  662. %Llda%1+1 
  663. cmp#high[%2] 
  664. bne?%K 
  665. lda%1 
  666. cmp#low[%2] 
  667. ?%K=* 
  668. ENDM 
  669.  
  670. * Memory manipulation 
  671.  
  672. STBMACRO 8con,loc [,index reg] 
  673. %Llda#%1 
  674. IF['[%3]'='[X]']OR['[%3]